home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / ArchiveUtils / JumpBack / Source / PreferencesPanel.m < prev    next >
Encoding:
Text File  |  1995-06-12  |  4.3 KB  |  168 lines

  1.  
  2. //======================================================================
  3. //
  4. //    Portions written by FreemanSoft Inc.
  5. //
  6. //    FreemanSoft disclaims any warranty of any kind, expressed or implied,
  7. //    as to this source code's fitness for any particular use.
  8. //
  9. //    For more information, use the following electronic mail addresses:
  10. //     
  11. //        info@FreemanSoft.com    general questions
  12. //        support@FreemanSoft.com    technical questions
  13. //
  14. //======================================================================
  15.  
  16.  
  17. /* Written by
  18.  *    Joe Freeman    jfreeman@next.com    
  19.  *    PreferencesPanel
  20.  *
  21.  *    This code has no warranty.  
  22.  *    It is provided so that the consumer may maintain and modify it
  23.  *    at their own risk.  Use this code at your own risk.
  24.  */
  25.  
  26. #import "PreferencesPanel.h"
  27. #import "common.h"
  28.  
  29. #define    RDIST_SOURCE    1
  30. #define    RDIST_DEST    2
  31. #define    RDIST_ABSOLUTE    0
  32. #define    RDIST_RELATIVE    1
  33. #define    DUP_UPDATE    0
  34. #define    DUP_EXACT    1
  35.  
  36. @implementation PreferencesPanel
  37.  
  38. + new
  39. {
  40.     static id     thePanel;
  41.     
  42.     if (!thePanel)
  43.     {
  44.     thePanel  = [NXApp loadNibSection:"PrefPanel.nib" owner:self];
  45.     [thePanel setFrameUsingName:pref_frame];
  46.     [thePanel setFrameAutosaveName:pref_frame];
  47.     [thePanel loadPatternFile:thePanel];
  48.     }
  49.     
  50.     return thePanel;
  51. }
  52.  
  53. - loadPatternFile:sender
  54. {
  55.     NXStream *    ourStream;
  56.     
  57.     ourStream = [[NXApp delegate] mapResource:pat_file];
  58.     if (ourStream){
  59.     [exceptPatText readText:ourStream];
  60.     [exceptPatText sizeToFit];
  61.     NXClose(ourStream);
  62.     }
  63.     return self;
  64. }
  65.  
  66. - savePatternFile:sender
  67. {
  68.     char     buf[MAXPATHLEN];
  69.     NXStream *    ourStream;
  70.     
  71.     /* assume directory already built by app somewhere else */
  72.     strcpy(buf,NXHomeDirectory());
  73.     strcat(buf,"/");
  74.     strcat(buf,lib_dir);
  75.     strcat(buf,"/");
  76.     strcat(buf,pat_file);
  77.     ourStream = NXOpenMemory(NULL, 0, NX_WRITEONLY);
  78.     if (ourStream){
  79.         [exceptPatText writeText:ourStream];
  80.     NXSaveToFile(ourStream, buf);
  81.     NXCloseMemory(ourStream, NX_FREEBUFFER);
  82.     }
  83.     return self;
  84. }
  85.  
  86. - makeKeyAndOrderFront:sender
  87. {
  88.     const char *temp;
  89.  
  90.     /* now load path preferences UI from the defaults */
  91.     temp = NXGetDefaultValue([NXApp appName],path_default);
  92.     if     (!strcmp(temp, rdist_absolute))
  93.             [pathPreference selectCellWithTag:RDIST_ABSOLUTE];
  94.     else if (!strcmp(temp, rdist_relative))
  95.             [pathPreference selectCellWithTag:RDIST_RELATIVE];
  96.  
  97.     /* now load method preferences UI from the defaults */
  98.     temp = NXGetDefaultValue([NXApp appName],dup_default);
  99.     if    (!strcmp(temp, dup_update))    
  100.             [methodPreference selectCellWithTag:DUP_UPDATE];
  101.     else if (!strcmp(temp, dup_exact))
  102.             [methodPreference selectCellWithTag:DUP_EXACT];
  103.     
  104.     /* should we do a find before each backup */
  105.     temp = NXGetDefaultValue([NXApp appName], find_no_write);
  106.     if (!strcmp(temp, yes_str))
  107.         [findWritable setState:1];
  108.     else 
  109.         [findWritable setState:0];
  110.     
  111.     [super makeKeyAndOrderFront:self];
  112.     return self;
  113. }
  114.  
  115. /*================================================================
  116.  *    preferences panel 
  117.  *================================================================*/
  118.  
  119.  
  120. - changePathPrefer:sender
  121. {
  122.     if ([sender selectedTag] == RDIST_RELATIVE)
  123.         NXWriteDefault([NXApp appName], path_default, rdist_relative);
  124.     else if ([sender selectedTag] == RDIST_ABSOLUTE)
  125.         NXWriteDefault([NXApp appName], path_default, rdist_absolute);
  126.     [[NXApp delegate] preferencesChanged:self];
  127.     NXWriteDefault([NXApp appName], info_default, no_str);
  128.     return self;
  129. }
  130.  
  131. - changeMethodPrefer:sender
  132. {
  133.     if ([sender selectedTag] == DUP_UPDATE)
  134.         NXWriteDefault([NXApp appName], dup_default, dup_update);
  135.     else if ([sender selectedTag] == DUP_EXACT)
  136.         NXWriteDefault([NXApp appName], dup_default, dup_exact);
  137.     NXWriteDefault([NXApp appName], info_default, no_str);
  138.     return self;
  139. }
  140.  
  141. - changeFindWritablePrefer:sender
  142. {
  143.     if ([findWritable state] == 0)
  144.         NXWriteDefault([NXApp appName], find_no_write, no_str);
  145.     else 
  146.             NXWriteDefault([NXApp appName], find_no_write, yes_str);
  147.     return self;
  148. }
  149.  
  150. - getExemptString:(char **)bufPtr length:(int *)length
  151. {
  152.     NXStream *    ourStream;
  153.     int        maxlen;
  154.     
  155.     ourStream = NXOpenMemory(NULL, 0, NX_WRITEONLY);
  156.     if (ourStream){
  157.         [exceptPatText writeText:ourStream];
  158.     NXGetMemoryBuffer(ourStream, bufPtr, length, &maxlen);
  159.     NXCloseMemory(ourStream, NX_SAVEBUFFER);
  160.     }
  161.     /* always save last run's pattern file */
  162.     [self savePatternFile:self];
  163.     return self;
  164. }
  165.  
  166.    
  167. @end
  168.